暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Helm安装部署Sentry

ItTalk 2019-11-25
2545

概述

业务日志以前是保存到本地磁盘文件,可通过监控本地文件的业务日志,发现解决业务中的问题。将微服务迁移到k8s平台后,Pod的日志被收集到了EFK,做实时的业务报警在EFK这边不好做。我们就需要引入了一个业务监控平台,解决k8s平台上的业务发现及告警的问题。Sentry就是这样一个开源的应用监控平台,能帮助我们做实时业务问题监控。

引入Sentry后的工作流程

设计 -> Code Review -> 测试QA -> CICD -> 业务问题发现(Sentry) -> 告警到指定用户 -> 定位问题并修复

Sentry的使用方式

服务端:

  1. 提供cloud 版本(https://sentry.io/auth/login),直接注册,即可使用。

  2. 提供开源的安装部署版本,可通过helm进行部署。

客户端:支持多种平台接入,以下是比较流行的接入方式,具体参见相应docs文档(https://docs.sentry.io/platforms)

使用helm安装

  1. #fetch sentry,并解压

  2. helm fetch --untar stable/sentry

  3. #进入sentry目录,编辑values.yaml配置文件

  4. ...

  5. email:

  6. from_address: xxxx@example.org //修改为发邮件人的地址

  7. host: smtp.exmail.qq.com //腾讯企业邮箱

  8. port: 587//端口需要使用587,非465

  9. use_tls: true//默认为true

  10. user: xxxx@example.org //修改为用户email

  11. password: xxxxx //修改为用户密码

  12. enable_replies: true

  13. ...

  14. service:

  15. type: NodePort//我这边Type修改为NodePort

  16. nodePort: 32190//并定义nodePort

  17. ...

  18. filestore:

  19. filesystem:

  20. persistence:

  21. storageClass: nfs-client

  22. accessMode: ReadWriteMany

  23. size: 50Gi

  24. ...

  25. #由于postgres 9.6.2版本下载很慢,这里我选用了本仓库的版本(先同步到本地仓库)

  26. 对charts/postgresql依赖的values.yaml做如下修改:

  27. ...

  28. image: "harbor.example.org/library/postgres"//请根据情况确认是不喜要替换

  29. persistence:

  30. storageClass: "nfs-client"//需提前配置好

  31. accessMode: ReadWriteMany

  32. size: 20Gi

  33. subPath: "postgresql-db"

  34. mountPath: /var/lib/postgresql/data/pgdata


  35. #执行以下命令进行安装

  36. helm install --wait --name sre-sentry -f ./sentry/values.yaml --namespace sre ./sentry

  37. NAME: sre-sentry

  38. LAST DEPLOYED: FriOct1122:03:512019

  39. NAMESPACE: sre

  40. STATUS: DEPLOYED


  41. RESOURCES:

  42. ==> v1/PersistentVolumeClaim

  43. NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE

  44. sre-sentry-postgresql Bound pvc-f4173484-ec2f-11e9-9ca2-00163e064a2f20Gi RWX nfs-client 4m38s

  45. sre-sentry Bound pvc-f418245a-ec2f-11e9-9ca2-00163e064a2f50Gi RWX nfs-client 4m38s


  46. ==> v1/Service

  47. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

  48. sre-sentry-postgresql ClusterIP192.168.125.27<none>5432/TCP 4m38s

  49. sre-sentry-redis-master ClusterIP192.168.134.237<none>6379/TCP 4m38s

  50. sre-sentry-redis-slave ClusterIP192.168.122.115<none>6379/TCP 4m38s

  51. sre-sentry NodePort192.168.98.128<none>9000:32190/TCP 4m38s


  52. ==> v1beta1/Deployment

  53. NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE

  54. sre-sentry-postgresql 11114m38s

  55. sre-sentry-redis-slave 11104m38s

  56. sre-sentry-cron 11114m38s

  57. sre-sentry-web 11114m38s

  58. sre-sentry-worker 22224m38s


  59. ==> v1beta2/StatefulSet

  60. NAME DESIRED CURRENT AGE

  61. sre-sentry-redis-master 114m38s


  62. ==> v1/Pod(related)

  63. NAME READY STATUS RESTARTS AGE

  64. sre-sentry-postgresql-5d87c88f49-cxx4x 1/1Running04m38s

  65. sre-sentry-redis-slave-5fc9fffbcf-mftzz 0/1ContainerCreating04m38s

  66. sre-sentry-cron-5b84b84c9d-sgk4w 1/1Running04m38s

  67. sre-sentry-web-5cfc5bb6b6-tz45j 1/1Running14m38s

  68. sre-sentry-worker-79fcfff6c7-j24pc 1/1Running04m37s

  69. sre-sentry-worker-79fcfff6c7-p9s9t 1/1Running14m37s

  70. sre-sentry-redis-master-01/1Running04m38s


  71. ==> v1/Secret

  72. NAME TYPE DATA AGE

  73. sre-sentry-postgresql Opaque14m38s

  74. sre-sentry-redis Opaque14m38s

  75. sre-sentry Opaque34m38s


  76. ==> v1/ConfigMap

  77. NAME DATA AGE

  78. sre-sentry-postgresql 04m38s

  79. sre-sentry 24m38s



  80. NOTES:


  81. WARNING:

  82. You have changed the default memory request for the db-init job hook. It may affect your setup.

  83. If you are facing problems, check next links:

  84. - https://github.com/helm/charts/issues/15296

  85. - https://github.com/getsentry/onpremise/blob/master/install.sh

  86. 1.Get the application URL by running these commands:

  87. export NODE_PORT=$(kubectl get--namespace sre -o jsonpath="{.spec.ports[0].nodePort}" services sre-sentry)

  88. export NODE_IP=$(kubectl get nodes --namespace sre -o jsonpath="{.items[0].status.addresses[0].address}")

  89. echo http://$NODE_IP:$NODE_PORT/auth/login/sentry


  90. 2.Loginwith


  91. USER: admin@sentry.local

  92. Get login password with

  93. kubectl get secret --namespace sre sre-sentry -o jsonpath="{.data.user-password}"| base64 --decode

总结

在安装过程中有几个注意点:

  1. 安装sentry时,postgresql初始化时间比较长,我这边出错,很大部分原因就是因为postgresql初始化引起,后来通过修改image为本地仓库镜像才得到解决。

  2. email配置这里,一直使用465端口,收不到邮件,改为587后就可以了


文章转载自ItTalk,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论