# 部署TingyunAgent ## 前提条件 - 具有要部署TingyunAgent的服务器的管理员权限,并且防火墙的配置能保障TingyunAgent与Collector的通信。 - 具有重启所有应用的权限。 - TingyunAgent所在目录预计所占最大空间为10GB。 - 建议安装TingyunAgent的主机可用内存不小于500MB。 ## 在Linux平台部署 1. 登录基调听云悟空平台。 2. 在左侧导航栏中选择**部署管理**。 3. 在**TingyunAgents**页面的右上角单击**新增**,新部署TingyunAgent。 4. 选择Linux部署平台。 1. 配置。 - 选择CPU架构:目前支持x86/64和ARM64两种CPU架构。 - 选择TingyunAgent版本:TingyunAgent安装包需要通过超级管理员admin登录系统,提前进行上传,才能在此处显示版本号。 - 多网卡:当TingyunAgent所部署到的主机有多个网卡时,用户可指定使用哪个网卡与Collector进行通信。 - 业务系统:在下拉菜单中选择TingyunAgent所属的业务系统。用户可在**APM>业务系统**中配置业务系统。 - 标签:单击文本框,弹出标签选项,选择一个或多个标签对不同的监控类型进行区分。如果还未创建标签,可以依次单击**基础设施>配置>标签管理**,进入标签管理页面创建新标签。 - 全栈数据采集:开启后,TingyunAgent对基础设施、服务端进行数据采集。如果禁用,TingyunAgent只会对基础设施进行数据采集。 2. 选择Agent Collector,若Collector列表中有数据,可直接勾选(支持多选,但部署环境要一致),支持根据部署环境或IP地址进行模糊查询;若Collector列表中没有数据,或想新增Collector,可单击**新增Collector**按钮进行添加(Collector部署方式请参见[Collector部署](Collector_deploy.md))。 3. 选用以下方式之一下载TingyunAgent安装脚本(需勾选Collector才可以下载)。 - 方法一:单击**点击生成**,系统会生成一条命令,单击右侧的**copy**按钮后在目标服务器上执行这条命令。 - 方法二:网络不通时,可直接单击下图右侧**下载**按钮下载安装脚本,并将安装脚本传到目标服务器。 ![image-20210825210331456](image/image-20210825210331456.png) 4. 校验安装脚本。 单击右侧的**copy**按钮后,在目标服务器上执行校验命令。校验脚本的目的是保证安装脚本下载完整,如果脚本未下载完整系统会给出提示信息。 5. 安装TingyunAgent,配置应用名。 请确保安装脚本在运行前具有可执行权限。在安装脚本所在目录,执行以下命令安装TingyunAgent(需要root权限)。 ``` sudo sh ./tingyun-tingyunagent-版本号.sh ``` 配置应用名。也可以不配置应用名,不配置时,选用默认命名方式。应用命名规则详情参见[应用命名规则](application_naming.md)。 5. 重启需要监控的进程。 在目标服务器重启需要监控的进程,即可自动嵌上探针,实现对应用的监控。若是Docker容器,需重启Docker容器才可以嵌上探针。对于主机和进程,无需重启进程,即可在控制台中看到数据。 在**新增TingyunAgent部署**页面最下方,单击**查看部署状态**按钮,可跳转到**TingyunAgents管理**页面,看到上述刚部署的服务器,且在该主机下有进程信息。如果有数据,说明TingyunAgent部署成功。 在左侧导航栏中单击**APM\>业务系统**,进入业务系统拓扑页面,左侧操作面板区下方的应用区可以看到新生成的应用。 在左侧导航栏中单击**基础设施>主机监控**,可以看到新生成的主机信息。 ## 在Windows平台部署 1. 登录基调听云悟空平台。 2. 在左侧导航栏中选择**部署管理**。 3. 在**TingyunAgents**页面的右上角单击**新增**,新部署TingyunAgent。 4. 选择Windows部署平台。 1. 配置。 - 选择TingyunAgent版本:TingyunAgent安装包需要通过超级管理员admin登录系统,提前进行上传,才能在此处显示版本号。 - 多网卡:当TingyunAgent所部署到的主机有多个网卡时,用户可指定使用哪个网卡与Collector进行通信。 - 业务系统:在下拉菜单中选择TingyunAgent所属的业务系统。用户可在**APM>业务系统**中配置业务系统。 - 标签:单击文本框,弹出标签选项,选择一个或多个标签对不同的监控类型进行区分。如果还未创建标签,可以依次单击**基础设施>配置>标签管理**,进入标签管理页面创建新标签。 2. 选择Agent Collector,若Collector列表中有数据,可直接勾选(支持多选,但部署环境要一致),支持根据部署环境或IP地址进行模糊查询;若Collector列表中没有数据,或想新增Collector,可单击**新增Collector**按钮进行添加(Collector部署方式请参见[Collector部署](Collector_deploy.md))。 3. 单击蓝色的**下载**字样,下载TingyunAgent安装包(需勾选Collector才可以下载)。 4. 将安装包放到目标主机,解压至C:\,双击运行install.bat,部署TingyunAgent。 5. 完成部署。 在**新增TingyunAgent部署**页面最下方,单击**查看部署状态**按钮,可跳转到**TingyunAgents管理**页面,看到上述刚部署的服务器,且在该主机下有进程信息。如果有数据,说明TingyunAgent部署成功。 在左侧导航栏中单击**APM\>业务系统**,进入业务系统拓扑页面,左侧操作面板区下方的应用区可以看到新生成的应用。 在左侧导航栏中单击**基础设施>主机监控**,可以看到新生成的主机信息。 ## 在Kubernetes平台部署 1. 登录基调听云悟空平台。 2. 在左侧导航栏中选择**部署管理**。 3. 在**TingyunAgents**页面的右上角单击**新增**,新部署TingyunAgent。 4. 选择Kubernetes部署平台。 1. 配置Kubernetes基础信息生成配置。 - 集群名称:输入TingyunAgent所要部署到的Kubernetes集群名称。 - 探针版本:保持默认即可,不可修改。 - 部署环境:输入用户k8s集群所在的部署环境。部署环境由字母、数字、下划线(_)、中划线(-)组成。 - Namespace:输入TingyunAgent所在主机所属的分组。默认为tingyun。该分组即服务组,如果输入的名称之前不存在,系统会新创建一个服务组。TingyunAgent监控的应用将默认属于该服务组。 - 业务系统:输入TingyunAgent所属的业务系统,TingyunAgent监控的应用将默认属于该业务系统。如果输入的是一个不存在的业务系统,系统将会新创建一个该名称的业务系统。业务系统由字母、数字、下划线(_)、中划线(-)组成。用户可在**APM>业务系统**中配置业务系统。 2. 选用以下方式之一下载TingyunAgent安装脚本并安装。 - 方法一:单击**点击生成**,系统会生成一条命令,单击右侧的**copy**按钮后在目标服务器上执行这条命令。 - 方法二:网络不通时,可直接单击下图右侧**下载**按钮下载安装脚本,并将安装脚本传到目标服务器。 5. 默认情况下TingyunAgents会为该集群下所有Node节点启用基础设施监控,如需禁用Node节点,执行`kubectl label node tingyun-infra-monitor=disabled`命令。开启应用监控,还需要给应用嵌码,可通过以下两种方式进行: - 给Namespace打label给整个Namespace下的应用嵌码。如果取消Namespace的label整个Namespace下的应用均不嵌码。 ``` kubectl label namespace default(your namespace) tingyun-injection=enabled ``` - 给deployment/daemonset/statefuset/pod打label给单个应用嵌码。如果取消label则该应用不嵌码。以Tocmat部署的deployment为例,配置如下: ``` apiVersion: apps/v1 kind: Deployment metadata: name: demo1 namespace: default spec: selector: matchLabels: app: demo1 template: metadata: labels: tingyun-agent-injected: "true" app: demo1 spec: containers: - name: demo1 image: tomcat ``` 6. 完成部署。 在**新增TingyunAgent部署**页面最下方,单击**查看部署状态**按钮,可跳转到**TingyunAgents管理**页面,看到上述刚部署的服务器,且在该主机下有进程信息。如果有数据,说明TingyunAgent部署成功。 在左侧导航栏中单击**APM\>业务系统**,进入业务系统拓扑页面,左侧操作面板区下方的应用区可以看到新生成的应用。 在左侧导航栏中单击**基础设施>主机监控**,可以看到新生成的主机信息,Kubernetes集群有多少个Node就会新增多少个主机。 ## 安全性(Java 2 Security)配置 > **说明**:目前仅WebSphere容器安装TingyunAgent时涉及安全性配置。 如果您使用的是Java 2 Security或WebSphere管理安全性, 需要授予tingyun目录下所有jar文件的执行权限。可以通过修改**java.policy**文件启用授予全局安全性,也可以修改某个Server的**server.policy**文件只授权单个Server的权限。 ### 授权所有Server 1. 修改**java.policy**文件,文件路径大概为: ```shell WAS_HOME/java/jre/lib/security/java.policy ``` 2. 将如下内容添加到java.policy中,`file:`后面的路径必须指定到tingyun-agent-java.jar的目录,并确保最后存在`-`。其中的collector.address为Agent Collector的IP地址,如果您部署了多个Agent Collector,` permission java.net.SocketPermission "Collector_IP","connect,accept,resolve"; `需要复制出多行,然后将所有的Agent Collector的IP地址悉数配置在collector.address。 ```java grant codeBase "file:/opt/tingyun-TingyunAgent/agent/java_${探针版本}/-" { permission java.security.AllPermission; permission java.net.SocketPermission "collector.address","connect,accept,resolve"; permission java.lang.RuntimePermission "createClassLoader"; permission java.lang.RuntimePermission "getClassLoader"; }; ``` 3. 重启应用WebSphere。 ### 授权单个Server 1. 修改**server.policy**文件,文件路径大概为: ```shell WAS_HOME/AppServer/profiles/APP_SERVER_NAME/properties/server.policy ``` 2. 将如下内容添加到java.policy中,`file:`后面的路径必须指定到tingyun-agent-java.jar的目录,并确保最后存在`-`。其中的collector.address为Agent Collector的IP地址,如果您部署了多个Agent Collector, `permission java.net.SocketPermission "Collector_IP","connect,accept,resolve";` 需要复制出多行,然后将所有的Agent Collector的IP地址悉数配置在collector.address。 ```shell grant codeBase "file:/opt/tingyun-TingyunAgent/agent/java_${探针版本}/-" { permission java.security.AllPermission; permission java.net.SocketPermission "collector.address","connect,accept,resolve"; permission java.lang.RuntimePermission "createClassLoader"; permission java.lang.RuntimePermission "getClassLoader"; }; ``` 3. 重启应用WebSphere。 > **说明**:每个Server最终的安全性都取决于`java.policy`和`server.policy`的并集,切勿在多个文件配置同样的授权。 policy文件的配置格式及语法可参考[Default Policy Implementation and Policy File Syntax](http://docs.oracle.com/javase/8/docs/technotes/guides/security/PolicyFiles.html)。