duiniwukenaihe SRE Engineer(target)

日志服务CLS对接Grafana

2021-04-16
duiniwukenaihe

背景:

腾讯云CLB(负载均衡)与CLS(日志服务)集成。然后看日志服务CLS专栏有一篇 CLS 对接 Grafana的博文。个人就也想尝试一下。当然了我的grafana是 Prometheus-oprator方式搭建在kubernetes集群中的。详见:https://cloud.tencent.com/developer/article/1807805。 下面开始记录下自己搭建的过程

一. Grafana中的配置

参照https://cloud.tencent.com/developer/article/1785751,但是饼形图的插件个人已经在Prometheus-oprator的搭建过程中安装了。现在重要的就是按照cls的插件和更改grafana的配置

1. 关于Grafana cls插件的安装

插件安装的过程还是简单的

###查看grafana pods的名称
kubectl get pods -n monitoring
###进入grafana容器
kubectl exec -it grafana-57d4ff8cdc-8hwsq bash -n monitoring
###下载cls插件并解压
cd /var/lib/grafana/plugins/
wget https://github.com/TencentCloud/cls-grafana-datasource/releases/latest/download/cls-grafana-datasource.zip
unzip cls-grafana-datasource.zip

至于版本的要求验证就忽略了….因为我的granfa image版本是7.4.3,是已经确认过的……。至于如何让grafana插件加载生效呢?我一遍都是用最笨的方法delete一下pod……

kubectl delete pods  grafana-57d4ff8cdc-8hwsq  -n monitoring
kubectl get pods -n monitoring

当然了这个时候如果进入grafana确认插件的安装成功与否一般的(grafana-cli plugins install通过官方源下载或者安装的)就可以了。但是安装cls这个插件是不可以的……为什么呢?强调一下腾讯云这个插件是一个非官方认证的插件。如果需要信任非官方的插件grafana是要开启配置参数的

2. 如何修改grafana的配置文件呢?

参照https://cloud.tencent.com/developer/article/1785751。部署完了插件的安装,是要修改grafana.ini的配置文件的。仔细观察一下prometheus-operator中 grafana的配置文件是默认的,并没有其他方式进行挂载,那该怎么办呢? 参照:https://blog.csdn.net/u010918487/article/details/110522133

将grafana的配置文件以configmap的方式进行挂载

具体流程:

1. 将grafana容器中的grafana.ini文件复制到本地

就是复习一下kubectl cp命令了:

kubectl cp grafana-57d4ff8cdc-ms4z9:/etc/grafana/grafana.ini /root/grafana/grafana.ini  -n monitoring

然后本地修改grafana.ini配置文件: 嗯: ;allow_loading_unsigned_plugins = 这一句配置修改为下面的这句

allow_loading_unsigned_plugins = tencent-cls-grafana-datasource

图中没有删除上面那句只是为了方便演示: 这配置的作用就是开启tencent-cls-grafana-datasource这个非认证插件的加载。

2. 将修改后的grafana.ini以configmap的方式挂载到kubernetes集群

kubectl create cm grafana-config --from-file=`pwd`/grafana.ini -n monitoring

3. 修改grafana-deployment.yaml挂载grafana-config

########volumeMounts部分新增以下内容:
      - mountPath: /etc/grafana
        name: grafana-config
        readOnly: true
########volumes部分新增以下内容:
    - configMap:
        name: grafana-config
      name: grafana-config

kubectl apply -f grafana-deployment.yaml -n monitoring

等待grafana pod 重新部署成功:

3. grafana dashboard中的配置

1. 在左侧导航栏中,单击【Creat Dashboards】。

2. 在 Data Sources 页面,单击【Add data source】。

3. 选中【Tencent Cloud Log Service Datasource】,并按照如下说明配置数据源

引用自:https://cloud.tencent.com/developer/article/1785751 | 配置项 | | | — | — | | Security Credentials | SecretId、SecretKey:API 请求密钥,用于身份鉴权。可前往 API 密钥管理 获取地址。 | | Log Service Info | region:日志服务区域简称。例如,北京区域填写ap-beijing。完整的区域列表格式请参考 地域列表。 Topic:日志主题ID 。 |

嗯登陆腾讯云后台cam控制台https://console.cloud.tencent.com/cam。快速新建用户,新建一个名为cls的用户:登陆方式:编程访问,用户权限:QcloudCLSReadOnlyAccess,可接收消息类型全部就注释掉了。

进行测试 sava&test。嗯 结果是显示操作未授权应该是下面的这个 果断进入腾讯云后台加上了QcloudCLSFullAccess的权限

再运行sava&test,ok成功。但是个人对权限比较敏感,这样的fullaccess的 都比较怕…腾讯云官方开源的好多组件对权限的声明都不是那么的多。 也希望能明确一下权限的边界。

4. 配置 dashboard

  1. 在左侧导航栏中,单击【Creat Dashboards】。
  2. 在 Dashboard 页面,单击【Add new panel】。
  3. 将数据源选择为您新建的日志数据源。如下图所示:

一下图片引用自https://cloud.tencent.com/developer/article/1785751

4. 展示图表

本来图表都该在上面搞完的。但是个人觉得还是单独列出来吧

1. 时间折线图

输入的 Query 语句如下所示:

* | select histogram( cast(__TIMESTAMP__ as timestamp),interval 1 minute) as time, count(*) as pv,count( distinct remote_addr) as uv group by time order by time limit 1000
  • Format:选择 Graph,Pie,Gauge panel
  • Metrics:pv,uv
  • Bucket:无聚合列,不填写
  • Time : time

记得在Visualization中选择折线图。 Graph 和Time Series两个出来的是一样的…也没有搞清楚区别.

2. 饼形图

搞不出来一般就是没有安装饼形图插件吧。一定记得前提安装了饼形图插件

输入的 Query 语句如下所示:

* | select count(*) as count, status group by status
  • Format:选择 Graph,Pie,Gauge panel
  • Metrics:count
  • Bucket:status
  • Time:不是连续时间数据,不填写

不管那种图表都的在Visualization选择要展现的形式啊…

3. 柱状图,压力图

柱状图,压力图(bar gauge)统计访问延时前10的页面

输入的 Query 语句如下所示:

* | select http_referer,avg(request_time) as lagency group by http_referer order by lagency desc limit 10
  • Format:选择Graph,Pie,Gauge panel
  • Metrics:lagency。
  • Bucket:http_referer。
  • Time:不是连续时间数据,不填写

为什么我做出来跟https://cloud.tencent.com/developer/article/1785751中的不一样呢? 参照http://codetd.com/article/11171054 可能cls官方这文章木有考虑我太小白….,按照大佬的文章修改下OK了 但是 颜色是不是也搞的绚丽点?Color scheme Thresholds 两个的配置可以满足你的需要….哈哈哈

4. 表格Table

表格的应该就算是简单的了

输入的 Query 语句如下所示:

* | select remote_addr,count(*) as count group by remote_addr order by count desc limit 10

Similar Posts

Comments