在logstash config中使用env变量

ljo96ir5  于 5个月前  发布在  Logstash
关注(0)|答案(1)|浏览(55)

我已经配置为运行logstash作为一个sidecar,并在捕获数据库中的任何更改后将数据推送到es。我已经添加了将由logstash image从我的服务使用的变量。但不知何故,它无法捕获这些env变量
logstash配置中的JDBC输入插件

jdbc {
    jdbc_driver_library => "/usr/share/logstash/mysql-connector-java-8.0.22.jar"
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://${MYSQL_HOST}/<DB_NAME>"
    jdbc_user => "${MYSQL_USER}"
    jdbc_password => "${MYSQL_PASSWORD}"
.
.
.

字符串
使用上述logstash配置的服务的部署.yaml。我是

- name: logstash-sidecar
  image: <Logstash image name here>
  imagePullPolicy: IfNotPresent
  securityContext:
     runAsNonRoot: true
     runAsUser: 1001
env:
            - name: MYSQL_HOST
              value: {{ .Values.datastore.host }}
            - name: MYSQL_USER
              value: {{ .Values.datastore.user | quote }}
            - name: ES_HOST
              value: {{ .Values.logstash.es.host }}
            - name: MYSQL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: db-secret
                  key: db_password_key

  • 请注意,logstash configurations是一个全新的服务,我在一个新服务中使用了该服务的镜像,我想将其作为side-car运行。
  • 请忽略缩进部分。这是正确的,只是在这里它没有解析好

我尝试部署更改,但logstash无法在sidecar中运行,因为它无法理解任何env变量

2nbm6dog

2nbm6dog1#

这段代码没有sprintf jdbc_connection_string,它只是按原样传递给sequel库。也没有sprintf jdbc_user或jdbc_password,所以它们也不能使用环境变量。

相关问题