【IBM应用网关】将统计信息发送到使用Sysdig的IBM云监控系统
首先
我使用了IBM Application Gateway的统计信息发送功能,试图将其发送到statsd服务器。
(参考)指南手册
启用统计收集、统计数据
另外,我还参考了以下的Qiita文章。
在IBM Cloud Monitoring with Sysdig上,尝试监控IBM Cloud Kubernetes Service(IKS)环境。
IBM云上有哪些服务可以接收StatsD的统计信息?
在IBM Cloud的服务中,我们搜索了一下是否有可以接收Statsd的服务。我们发现了一个名为「IBM Cloud Monitoring」的服务,看起来可以作为StastD服务器进行统计收集,于是我们立刻进行了尝试。
链接:https://cloud.ibm.com/docs/monitoring?topic=monitoring-kubernetes_cluster
您可以学习如何配置IBM Cloud™ Kubernetes Service集群,以便将指标转发到IBM Cloud® Monitoring服务。
要配置集群以传输指标,您需要使用DaemonSet在Kubernetes集群的每个工作节点上安装监控代理。监控代理使用访问密钥(令牌)来在IBM Cloud Monitoring实例上进行身份验证。监控代理充当数据收集器,自动收集工作节点CPU和内存使用率、容器的输入/输出HTTP流量以及一些基础设施组件的数据等指标。此外,使用Prometheus兼容的抓取器或StatsD门面,您还可以在代理中收集自定义应用程序指标。
1. 使用IBM Cloud Monitoring与sysdig进行设置
打开 IBM 云监控。
这次为了验证,我选择了免费的轻型计划。
在轻型计划中,在创建时出现了错误,但功能还是可以使用的。
复制并执行Openshift环境的命令。
有两个选项,一个是私有的,一个是公共的,我只执行了私有的。
以下に示すような詳細は省略しますが、WindowsのPowershellやコマンドプロンプトでは実行できなかったため、WSL2を使用してUbuntu環境でエージェントのインストールを行いました。
curl -sL https://ibm.biz/install-sysdig-k8s-agent | bash -s -- -a <ingestion key> -c ingest.private.jp-tok.monitoring.cloud.ibm.com -ac 'sysdig_capture_enabled: false' --openshift
由于Ubuntu环境中存在着许多缺失的软件包,所以我们会逐个解决它们。
-
- kubectlコマンド
-
- ibmcloud CLIコマンド
- jqコマンド
最终我们成功部署了Pod。
> curl -sL https://ibm.biz/install-sysdig-k8s-agent | bash -s -- -a 85xxxxxa7-xxxx-xxxx-xxxx-dxxxxxxxxb9 -c ingest.private.jp-tok.monitoring.cloud.ibm.com -ac 'sysdig_capture_enabled: false' --openshift
* Detecting operating system
* Downloading yamls files to the temp directory: /tmp/sysdig-agent-k8s.vnf3mH
* Downloading Sysdig cluster role yaml
* Downloading Sysdig config map yaml
* Downloading Sysdig daemonset v2 yaml
* Downloading Sysdig daemonset slim v2 yaml
* Downloading Sysdig kmod-thin-agent-slim daemonset
* Creating project: ibm-observe
* Creating sysdig-agent serviceaccount in project: ibm-observe
* Creating sysdig-agent clusterrole
clusterrole.rbac.authorization.k8s.io/sysdig-agent unchanged
* Creating sysdig-agent access policies
* Creating sysdig-agent secret using the ACCESS_KEY provided
* Retrieving the Cluster ID and Cluster Name
FAILED
'ks' is not a registered command. Check your list of installed plug-ins. See 'ibmcloud help'.
* Setting ibm.containers-kubernetes.cluster.id c2xxxxxxxxxxg
* Updating agent configmap and applying to cluster
* Setting tags
* Setting collector endpoint
* Adding additional configuration to dragent.yaml
* Enabling Prometheus
configmap/sysdig-agent created
Slim agent selected
Processing all-icr-io as all-icr-io
secret/all-icr-io created
* Deploying the sysdig agent
daemonset.apps/sysdig-agent created
The list of agent pods deployed in the namespace "ibm-observe" are:
sysdig-agent-65972 0/1 Init:0/1 0 5s
sysdig-agent-8j9ld 0/1 Init:0/1 0 5s
Make sure the above pods all turn to "Running" state before continuing
Should any pod not reach the "Running" state, further info can be obtained from logs as follows
'kubectl logs <agent-pod-name> -n ibm-observe'
Pod的Running状态花了大约5分钟的时间。
> oc get pods -n ibm-observe
NAME READY STATUS RESTARTS AGE
sysdig-agent-65972 1/1 Running 0 4m38s
sysdig-agent-8j9ld 1/1 Running 0 4m38s
试着手动从IBM Application Gateway容器发送日志。
为了确认Statsd传输设置(服务器和端口),我们通过oc rsh命令访问IBM Application Gateway的Pod,手动验证是否能够进行日志连接。
访问Pod。
>oc get pods
NAME READY STATUS RESTARTS AGE
iag-1-build 0/1 Completed 0 30m12s
iag-1-deploy 0/1 Completed 0 30m12s
iag-1-jlf2q 1/1 Running 0 30m12s
> oc rsh iag-1-jlf2q
以下是发送日志信息的示例命令:
echo "hello_statsd:1|c" > /dev/udp/127.0.0.1/8125
尝试的组合是,收集器端点和端口号(6443),以及Sysdig手册中提到的127.0.0.1和端口号(8125)。
通過组合确认后,发送地址为127.0.0.1,端口为8125,使用与IBM应用网关的样例Yaml文件相同的配置,成功将数据发送到IBM Cloud Monitoring。
ingest.private.jp-tok.monitoring.cloud.ibm.com××127.0.0.1×〇(正解)
3. 使用 IBM 应用网关访问测试应用程序并确认日志输出。
我将在IBM应用网关上配置与Statsd相关的设置。
有关可发送到StatsD服务器的统计信息,请参阅启用统计信息收集。
我将尝试发送所有可用的统计信息。
~~省略~~~
logging:
statistics:
server: 127.0.0.1
port: 8125
frequency: 10
components:
- iag.https
- iag.authn
- iag.threads
- iag.sescache
- iag.redis
- iag.resource_servers
最终
我已经确认IBM Cloud Monitoring with Sysdig可以发送IBM Application Gateway的统计信息。
後來我意識到,除了自動部署外,還有手動部署代理的步驟。手動將監控代理部署到OpenShift集群。
我计划增加IBM应用网关下的应用程序访问量,并验证如何查看统计信息。