CN111352691B - 一种日志采集方法和系统 - Google Patents
一种日志采集方法和系统 Download PDFInfo
- Publication number
- CN111352691B CN111352691B CN201811570151.5A CN201811570151A CN111352691B CN 111352691 B CN111352691 B CN 111352691B CN 201811570151 A CN201811570151 A CN 201811570151A CN 111352691 B CN111352691 B CN 111352691B
- Authority
- CN
- China
- Prior art keywords
- log
- container
- server
- log acquisition
- agent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000010586 diagram Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种日志采集方法和系统。本发明的日志采集系统包括部署在容器运行的主机上的agent和日志采集服务器。本发明的日志采集方法包括:利用部署在容器运行的主机上的agent采集主机中的容器信息,并将采集到的容器信息发送到预先构建的日志采集服务器上,利用日志采集服务器将容器进行归类并为每类容器设置日志采集路径;在接收到日志采集服务器发送的日志采集路径配置成功的通知消息时,agent根据通知消息从日志采集服务器拉取日志采集配置信息;agent根据日志采集配置信息进行日志采集,获取日志并发送给日志采集服务器。本发明日志采集方案可以避免容器漂移导致的应用日志采集困难的问题,具有较高的通用性。
Description
技术领域
本发明涉及容器技术领域,特别涉及一种日志采集方法和系统。
背景技术
Docker是一个开源的应用容器引擎,依赖于Linux的LXC(Linux Container,内核虚拟化)虚拟化技术,允许开发者把应用以及依赖包部署到一个可移植的容器中,然后发布到任何流行的Linux机器上,从而保证应用环境的一致性。
由于Docker本身利用了LXC轻量虚拟化技术,从而可以利用有线的硬件资源为用户提供更多的计算资源,所以一台运行Linux操作系统的服务器主机上,可以承载多个容器的运行,尤其在云计算时代的大环境下,资源利用和管理尤为重要。这就驱使容器中应用的架构也要做相应调整,由传统的单一应用部署方式,演变成多节点分布式的部署方式,结合容器保证应用环境的一致性的特性,从而达到应用迅速弹性扩缩的目的。
日志采集基本采用部署日志采集工具agent的方式,但分布式部署方式对传统的日志采集方式也提出了更大的挑战,原来的日志采集主机是固定的,应用的目录也是固定的,现在的应用由于可以弹性扩缩,容器本身可以在不同主机中迅速漂移和启停,对应用的日志采集带来很大的不确定性。
发明内容
本发明提供了一种日志采集方法和系统,以解决由于容易漂移导致应用日志难以采集的问题。
本发明的一方面提供了一种日志采集方法,包括:利用部署在容器运行的主机上的agent采集主机中的容器信息,并将采集到的容器信息发送到预先构建的日志采集服务器上,利用日志采集服务器将容器进行归类并为每类容器设置日志采集路径;在接收到日志采集服务器发送的日志采集路径配置成功的通知消息时,agent根据通知消息从日志采集服务器拉取日志采集配置信息;agent根据日志采集配置信息进行日志采集,获取日志并发送给日志采集服务器。
本发明的另一方面提供了一种日志采集系统,包括:部署在容器运行的主机上的agent,用于采集所述主机中的容器信息,并将采集到的容器信息发送到预先构建的日志采集服务器上,以及在接收到日志采集服务器发送的日志采集路径配置成功的通知消息时,根据通知消息从日志采集服务器拉取日志采集配置信息,根据日志采集配置信息进行日志采集,获取日志并发送给日志采集服务器;
日志采集服务器,用于将容器进行归类并为每类容器设置日志采集路径,以及用于在日志采集路径设置成功时向agent发送日志采集路径配置成功的通知。
本发明通过在容器运行的主机上部署agent,使agent与容器独立开来,避免容器升级对agent造成影响,在日志采集过程中,预先利用agent采集主机中的容器信息并汇总给日志采集服务器,利用日志采集服务器将容器进行归类并为每类容器设置日志采集路径,在日志采集路径配置成功时,agent从日志采集服务器拉取日志采集配置信息,基于日志采集配置信息进行日志采集,可以避免容器漂移导致的应用日志采集困难的问题,具有较高的通用性。
附图说明
图1为本发明实施例示出的日志采集方法的流程图;
图2为本发明实施例示出的日志采集流程图;
图3为本发明实施例示出的日志采集系统的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本发明的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本发明的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本发明的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
日志采集基本采用部署agent的方式,目前通常通过下述三种方案进行采集。
第一种方案,通过docker命令采集容器日志:
由于容器的运行是依赖服务器主机的Linux环境,可以先登录运行容器的主机,然后通过docker logs命令或调用docker提供的api查看容器日志,并借助agent执行该命令,对该命令返回结果的日志进行实时采集。
此种方案的缺陷是:容器在启动时,必须指定容器内部应用的日志输出到容器本身日志中,否则容器日志内容里面不会体现内部应用的日志,而且应用日志和容器日志混合输出,对日志分析带来挑战。
第二种方案,在容器中添加agent:
在构建镜像时,将日志采集的agent添加到镜像中,通过镜像启动容器时,默认将agent启动,并对应用的日志进行采集。
此种方案的缺陷:镜像制作后即为只读的文件,容器是以镜像为基础进行启动的,它依赖镜像里面的基础环境,容器启动后对它所依赖的镜像无法修改,这就意味着agent的升级就得重新构建镜像,然后再重新拉起容器,容易对业务应用造成影响。
第三种方案,容器启动时将日志文件挂载到宿主机的文件夹:
在容器启动时,通过docker本身的挂载技术将容器内部的文件夹,挂载到主机的文件夹上,这样通过主机上的agent采集主机对应的文件夹就能采集到日志。
此种方案的缺陷:在容器启动时需要指定主机挂载目录,有启动要求,且容器多了容易覆盖其他容器挂载的目录,不好管理;如果主机的文件夹只有只读权限,可能会导致容器中的日志文件写入不进去等等,由于主机的使用权限不在应用的管理范围之内,有很多的不确定因素会导致日志采集不到。
基于上述情形,本申请实施例针对容器漂移导致应用日志采集困难的问题,提供一种通用的日志采集方案。
图1为本发明实施例示出的日志采集方法的流程图,如图1所示,本实施例的方法包括:
S110,利用部署在容器运行的主机上的agent采集主机中的容器信息,并将采集到的容器信息发送到预先构建的日志采集服务器上,利用日志采集服务器将容器进行归类并为每类容器设置日志采集路径。
S120,在接收到日志采集服务器发送的日志采集路径配置成功的通知消息时,agent根据通知消息从日志采集服务器拉取日志采集配置信息。
S130,agent根据日志采集配置信息进行日志采集,获取日志并发送给日志采集服务器。
本实施例通过在容器运行的主机上部署agent,使agent与容器独立开来,避免容器升级对agent造成影响,在日志采集过程中,预先利用agent采集主机中的容器信息并汇总给日志采集服务器,利用日志采集服务器将容器进行归类并为每类容器设置日志采集路径,在日志采集路径配置成功时,agent从日志采集服务器拉取日志采集配置信息,基于日志采集配置信息进行日志采集,可以避免容器漂移导致的应用日志采集困难的问题,具有较高的通用性。
以下结合图2对上述步骤S110~S130进行详细说明。
首先,执行步骤S110,即利用部署在容器运行的主机上的agent采集主机中的容器信息,并将采集到的容器信息发送到预先构建的日志采集服务器上,利用日志采集服务器将容器进行归类并为每类容器设置日志采集路径。
本实施例中的容器信息包括容器属性信息,容器属性信息包括但不限于容器名称、容器所在主机和容器所依赖的镜像名称信息。
本实施例的日志采集服务器可以根据容器名称和容器所依赖的镜像名称将相同业务的容器进行归类,并统一设置日志的采集路径。
其中,日志采集服务器与agent所在主机之间可以进行socket连接。
在利用日志采集服务器将容器进行归类并为每类容器设置日志采集路径之后,继续执行步骤S120,即在接收到日志采集服务器发送的日志采集路径配置成功的通知消息时,agent根据通知消息从日志采集服务器拉取日志采集配置信息。
日志采集服务器发送的日志采集路径配置成功的通知可以携带容器名称和容器所在主机IP,据此可以根据通知携带的容器所在主机IP向相应主机发送通知消息,以及主机上的agent可以根据该通知消息携带的容器名称从日志采集服务器拉取日志采集配置信息,其中日志采集配置信息包括日志采集路径和日志拆分规则。
本实施例的agent可以对接收到的通知消息进行解析,获取通知消息携带的容器名称,从日志采集服务器拉取容器名称关联的日志采集配置信息。Agent在拉取日志采集配置信息时,可以根据轮询规则主动从日志采集服务器拉取日志采集配置信息,例如每分钟从日志采集服务器拉取日志采集配置信息,以获取最新的日志采集配置信息;还可以根据日志采集服务器发送的拉取日志采集配置信息的通知消息,基于该拉取日志采集配置信息的通知消息从日志采集服务器拉取日志采集配置信息。
在agent拉取到日志采集配置信息之后,执行步骤S130,即agent根据日志采集配置信息进行日志采集,获取日志并发送给日志采集服务器。
本实施例中,agent使用docker top命令查看容器中运行的进程信息,并根据正则表达式从进程信息中解析目标进程。一个实施例中,agent根据正则表达式,解析第一个进程为目标进程进行缓存。接着使用cd命令进入主机目标进程下的日志采集路径,即进入主机的/proc/{pid}/{采集路径},通过读取文件流的方式获取日志采集路径下的日志文件;其中,proc为主机的虚拟文件系统,{pid}为目标进程,{采集路径}为从日志采集服务器拉取到的日志采集路径。
本实施例在通过读取文件流的方式获取日志文件时,还根据日志拆分规则对读取的文件流进行日志拆分,将拆分后的日志通过socket协议发送给日志采集服务器。
与本发明日志采集方法相对应的,本发明实施例还提供了一种日志采集系统。
图3为本发明实施例示出的日志采集系统的结构框图,如图3所示,本实施例的日志采集系统包括:
部署在容器运行的主机上的agent,用于采集主机中的容器信息,并将采集到的容器信息发送到预先构建的日志采集服务器上,以及在接收到日志采集服务器发送的日志采集路径配置成功的通知消息时,根据通知消息从日志采集服务器拉取日志采集配置信息,根据日志采集配置信息进行日志采集,获取日志并发送给日志采集服务器;
日志采集服务器,用于将容器进行归类并为每类容器设置日志采集路径,以及用于在日志采集路径设置成功时向所述agent发送日志采集路径配置成功的通知。
在一个实施例中,日志采集服务器,具体是用于根据容器名称和容器所依赖的镜像名称将相同业务的容器进行归类。
在一个实施例中,agent用于解析通知消息,获取通知消息携带的容器名称;以及从日志采集服务器拉取所述容器名称关联的日志采集配置信息,日志采集配置信息包括日志采集路径和日志拆分规则。
Agent还用于使用docker top命令查看容器中运行的进程信息,并根据正则表达式从进程信息中解析目标进程;使用cd命令进入主机目标进程下的日志采集路径,通过读取文件流的方式读取所述日志采集路径下的日志文件,并根据日志拆分规则对读取的文件流进行日志拆分,将拆分后的日志通过socket协议发送给日志采集服务器。
为了便于清楚描述本发明实施例的技术方案,在发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。
以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围应以权利要求的保护范围为准。
Claims (7)
1.一种日志采集方法,其特征在于,包括:
利用部署在容器运行的主机上的日志采集工具agent采集所述主机中的容器信息,并将采集到的容器信息发送到预先构建的日志采集服务器上,利用所述日志采集服务器将容器进行归类并为每类容器设置日志采集路径;所述容器信息包括容器属性信息,所述容器属性信息包括容器名称、容器所在主机、容器所依赖的镜像名称信息;
在接收到日志采集服务器发送的日志采集路径配置成功的通知消息时,所述agent根据所述通知消息从所述日志采集服务器拉取日志采集配置信息;
所述agent根据所述日志采集配置信息进行日志采集,获取日志并发送给所述日志采集服务器;
所述agent根据所述通知从所述日志采集服务器拉取日志采集配置信息,包括:
所述agent解析所述通知消息,获取所述通知消息携带的容器名称;
所述agent从所述日志采集服务器拉取所述容器名称关联的日志采集配置信息,所述日志采集配置信息包括日志采集路径;
所述agent根据所述日志采集配置信息进行日志采集,包括:
所述agent使用docker top命令查看容器中运行的进程信息,并根据正则表达式从所述进程信息中解析目标进程;
所述agent使用cd命令进入所述主机所述目标进程下的所述日志采集路径,通过读取文件流的方式读取所述日志采集路径下的日志文件。
2.根据权利要求1所述的方法,其特征在于,所述利用所述日志采集服务器将容器进行归类具体为:
根据容器名称和容器所依赖的镜像名称将相同业务的容器进行归类。
3.根据权利要求1所述的方法,其特征在于,所述日志采集配置信息还包括日志拆分规则。
4.根据权利要求3所述的方法,其特征在于,所述获取日志并发送给所述日志采集服务器,包括:
根据所述日志拆分规则对读取的文件流进行日志拆分,将拆分后的日志通过socket协议发送给所述日志采集服务器。
5.一种日志采集系统,其特征在于,包括:
部署在容器运行的主机上的日志采集工具agent,用于采集所述主机中的容器信息,并将采集到的容器信息发送到预先构建的日志采集服务器上,以及在接收到日志采集服务器发送的日志采集路径配置成功的通知消息时,根据所述通知消息从所述日志采集服务器拉取日志采集配置信息,根据所述日志采集配置信息进行日志采集,获取日志并发送给所述日志采集服务器;所述容器信息包括容器属性信息,所述容器属性信息包括容器名称、容器所在主机、容器所依赖的镜像名称信息;
所述日志采集服务器,用于将容器进行归类并为每类容器设置日志采集路径,以及用于在日志采集路径设置成功时向所述agent发送日志采集路径配置成功的通知;
所述agent,用于解析所述通知消息,获取所述通知消息携带的容器名称;以及从所述日志采集服务器拉取所述容器名称关联的日志采集配置信息,所述日志采集配置信息包括日志采集路径和日志拆分规则;还用于使用docker top命令查看容器中运行的进程信息,并根据正则表达式从所述进程信息中解析目标进程;使用cd命令进入所述主机所述目标进程下的所述日志采集路径,通过读取文件流的方式读取所述日志采集路径下的日志文件。
6.根据权利要求5所述的系统,其特征在于,所述日志采集服务器,具体是用于根据容器名称和容器所依赖的镜像名称将相同业务的容器进行归类。
7.根据权利要求5所述的系统,其特征在于,所述agent,还用于根据所述日志拆分规则对读取的文件流进行日志拆分,将拆分后的日志通过socket协议发送给所述日志采集服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811570151.5A CN111352691B (zh) | 2018-12-21 | 2018-12-21 | 一种日志采集方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811570151.5A CN111352691B (zh) | 2018-12-21 | 2018-12-21 | 一种日志采集方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352691A CN111352691A (zh) | 2020-06-30 |
CN111352691B true CN111352691B (zh) | 2023-11-03 |
Family
ID=71193807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811570151.5A Active CN111352691B (zh) | 2018-12-21 | 2018-12-21 | 一种日志采集方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111352691B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463725B (zh) * | 2020-11-19 | 2024-05-14 | 北京思特奇信息技术股份有限公司 | 一种云化架构日志文件批量处理方法、装置及存储介质 |
CN112596993B (zh) * | 2020-12-17 | 2023-06-20 | 杭州安恒信息技术股份有限公司 | 日志分层方法、系统、可读存储介质及计算机设备 |
CN112905537B (zh) * | 2021-02-20 | 2022-09-02 | 北京百度网讯科技有限公司 | 文件处理方法、装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789303A (zh) * | 2016-12-29 | 2017-05-31 | 北京奇艺世纪科技有限公司 | 一种容器日志采集方法及装置 |
CN107426023A (zh) * | 2017-07-21 | 2017-12-01 | 携程旅游信息技术(上海)有限公司 | 云平台日志收集和转发方法、系统、设备及存储介质 |
-
2018
- 2018-12-21 CN CN201811570151.5A patent/CN111352691B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789303A (zh) * | 2016-12-29 | 2017-05-31 | 北京奇艺世纪科技有限公司 | 一种容器日志采集方法及装置 |
CN107426023A (zh) * | 2017-07-21 | 2017-12-01 | 携程旅游信息技术(上海)有限公司 | 云平台日志收集和转发方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111352691A (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111352691B (zh) | 一种日志采集方法和系统 | |
US11734123B2 (en) | Method and system to discover and manage distributed applications in virtualization environments | |
CN108196915B (zh) | 基于应用容器引擎的代码处理方法、设备及存储介质 | |
CN113557747B (zh) | 基于网络的媒体处理中处理媒体内容的方法和装置 | |
US11223680B2 (en) | Computer servers for datacenter management | |
US20150302192A1 (en) | System and methods of performing antivirus checking in a virtual environment using different antivirus checking techniques | |
KR101751515B1 (ko) | 테스트 실행 장치, 방법 및 컴퓨터 프로그램 | |
KR20170012442A (ko) | 사용자 생성 미디어 파일들의 자동 아카이빙 | |
US20190258534A1 (en) | Message oriented middleware with integrated rules engine | |
EP3611643B1 (en) | Malware detection based on user interactions | |
CN112583585B (zh) | 交易执行方法、设备和存储介质 | |
US20200344323A1 (en) | Function repository selection mode and signaling for cloud based processing | |
US20130198742A1 (en) | Subsequent operation input reduction systems and methods for virtual machines | |
US20170329647A1 (en) | Object Storage Workflow Optimization Leveraging Storage Area Network Value Adds | |
US10225343B2 (en) | Object storage workflow optimization leveraging underlying hardware, operating system, and virtualization value adds | |
US8086627B2 (en) | Software inventorying system for a shared file system | |
CN109218338B (zh) | 信息处理系统、方法和装置 | |
CA2867424A1 (en) | Information processing system, information processing method, communication terminal, server, and control methods and control programs thereof | |
CN112650662A (zh) | 测试环境部署方法及装置 | |
CN104281486A (zh) | 一种虚拟机处理方法和装置 | |
KR20190077926A (ko) | 사물인터넷 디바이스 모니터링 프레임워크, 이를 탑재한 포그 서버 및 포그 컴퓨팅 시스템 | |
Ahmed et al. | Analysis of cloud digital evidence | |
US11539776B2 (en) | Method for signaling protocol characteristics for cloud workflow inputs and outputs | |
US11838390B2 (en) | Function repository selection mode and signaling for cloud based processing | |
US20240193032A1 (en) | Performing ci/cd error analysis involving software products that are dependent upon each other |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Room 818, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Applicant after: ULTRAPOWER SOFTWARE Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A Room 601 Applicant before: ULTRAPOWER SOFTWARE Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |