IBM® Cloud Private 监视服务
您可以部署 IBM Cloud Private 随附的监视服务的更多实例,以监视应用程序的状态。
从Catalog部署监视服务
您可以使用Catalog中的定制配置在 IBM Cloud Private management console 中部署更多的监视堆栈。
- 在Catalog页面中,单击
ibm-icpmonitoringHelm Chart 以配置和部署 Chart。 - 请提供必需参数的值。
- Helm 发行版名称:“monitoring”
- 目标名称空间:“kube-system”
- 部署方式:“Managed”
- 集群访问地址:指定用于访问 IBM Cloud Private console 的域名服务 (DNS) 或 IP 地址。
- 集群访问端口:指定用于访问 IBM Cloud Private console 的端口。缺省端口为
8443。 持久卷:如果针对 Prometheus、Grafana 或 Alertmanager 使用持久卷,请选中所需复选框。针对 persistentVolume 的 storageClass 的名称:指定用于供应卷的存储器类的名称。
从 CLI 部署监视服务
- 安装 Kubernetes 命令行 (kubectl)。 请参阅使用 kubectl CLI 访问 IBM Cloud Private 集群。
- 安装 Helm 命令行界面 (CLI)。 请参阅设置 Helm CLI。
-
安装
ibm-icpmonitoringHelm Chart。 运行以下命令:helm install -n monitoring --namespace kube-system --set mode=managed --set clusterAddress=<IP_address> --set clusterPort=<port> ibm-charts/ibm-icpmonitoring其中,
<IP_address>是用于访问 IBM Cloud Private console 的 DNS 或 IP 地址。<port>是用于访问 IBM Cloud Private console 的端口。
访问监视仪表板
首先,登录 IBM Cloud Private management console。
然后,使用以下 URL 访问监视仪表板:
-
用于访问 Prometheus 仪表板的 URL:
https://<IP_address>:<port>/prometheus -
用于访问 Grafana 仪表板的 URL:
https://<IP_address>:<port>/grafana- 用于访问 Alertmanager 仪表板的 URL:
https://<IP_address>:<port>/alertmanager
其中,
<IP_address>是用于访问 IBM Cloud Private console 的 DNS 或 IP 地址。<port>是用于访问 IBM Cloud Private console 的端口。 - 用于访问 Alertmanager 仪表板的 URL:
更改 Grafana 的用户名和密码
要更改缺省设置为 admin/admin 的 Grafana 用户名和密码,请创建名为 update.yaml 的文件:在“用户名”和“密码”字段值使用 base64 编码的文件中包含以下内容:
apiVersion: v1
kind: Secret
metadata:
labels:
app: monitoring-grafana
chart: ibm-icpmonitoring-1.1.1
component: grafana
release: monitoring
heritage: Tiller
name: monitoring-grafana-secret
type: Opaque
data:
username: ${BASE64 encoded username}
password: ${BASE64 encoded password}
对于 kube-system 名称空间,请完成以下步骤:
-
输入以下命令:
kubectl replace -f update.yaml -n $NAMESPACE -
使用以下命令获取 Grafana 的 pod 名称:
kubectl get pods -n $NAMESPACE | grep grafana -
使用以下命令删除该 pod,其中 $POD 是 pod 的名称:
kubectl delete pod $POD -n $NAMESPACE -
等待 pod 完全备份。 您可以通过运行以下命令并等待其读取 2/2 来对此进行检查:
kubectl get pods -n $NAMESPACE --no-headers | grep grafana | grep -v Terminating
此时,通过在控制台中检查以下 URL,可以查看是否需要挂起数据源备份:
https://{CLUSTER_IP}:8443/grafana/api/datasourceshttps://{CLUSTER_IP}:8443/grafana/api/datasources
后端系统自动使用已更新的用户名和密码。 如果返回值是 [],那么需要挂起数据源备份。
对于 non kube-system 名称空间,请完成以下步骤:
-
输入以下命令:
kubectl replace -f update.yaml -n default -
使用以下命令获取 Grafana 的 pod 名称:
kubectl get pods -n default | grep grafana -
使用以下命令删除该 pod,其中 $POD 是 pod 的名称
kubectl delete pod $POD -n default -
等待 pod 完全备份。 您可以通过运行以下命令并等待其读取 1/1 来对此进行检查:
kubectl get pods -n default --no-headers | grep grafana | grep -v Terminating
此时,您可以查看是否需要挂起数据源备份。
通过输入以下命令,获取用于部署的节点端口:
kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services monitoring-grafana
然后,在 UI 中检查以下 URL,如果返回值是 [],那么将需要挂起数据源备份:
curl -k http://$USERNAME:$PASSWORD@$CLUSTER_IP:$NODEPORT/api/datasources
配置应用程序以使用监视服务
部署监视服务的实例之后,必须配置应用程序以使用监视服务。 在应用程序的 Helm Chart 中完成此配置。
-
修改应用程序以显示指标。
-
对于具有指标端点的应用程序,必须使用注释
prometheus.io/scrape: 'true'将指标端点定义为 Kubernetes 服务。 服务定义类似于以下代码:apiVersion: v1 kind: Service metadata: annotations: prometheus.io/scrape: 'true' labels: app: liberty name: liberty spec: ports: - name: metrics targetPort: 5556 port: 5556 protocol: TCP selector: app: liberty type: ClusterIP注:有关为 Prometheus 配置指标端点的更多信息,请参阅 Prometheus 文档中的客户机库
。
-
对于使用
collectd并依赖于collectd-exporter显示指标的应用程序,可以更新应用程序容器内的collectd配置文件。 在此配置文件中,必须将网络插件和点添加到collectd导出器。 将以下文本添加到配置文件:LoadPlugin network <Plugin network> Server "monitoring-prometheus-collectdexporter" "25826" </Plugin>
-
Prometheus 的日志和指标管理
您可以通过更新 config.yaml 文件中的 storage.tsdb.retention 参数,修改指标保留时间的时间段。 缺省情况下,此值设置为 24h,这表示指标将保持 24 小时,然后才会清除。 请参阅配置监视服务。
但是,如果需要手动从系统中移除此数据,那么可以使用 Prometheus 组件所提供的 REST API。
- 要删除指标数据,请参阅删除序列
。
- 要从磁盘中移除已删除的数据,并清理磁盘空间,请参阅清除 Tombstones
。
注意:目标 URL 的格式必须为 https://<IP_address>:8443/prometheus,其中,<IP_address> 是用于访问 management console 的 IP 地址。
-
用于删除指标数据的命令类似于以下代码:
https://<IP_address>:8443/prometheus/api/v1/admin/tsdb/delete_series?******* -
用于移除已删除数据并清理磁盘的命令类似于以下代码:
https://<IP_address>:8443/prometheus/api/v1/admin/tsdb/clean_tombstones