Beispiel #1
0
        public InfluxDbClientAutoVersion(InfluxDbClientConfiguration influxDbClientConfiguration)
        {
            _influxDbClient = new InfluxDbClientBase(influxDbClientConfiguration);
            var errorHandlers = new List <ApiResponseErrorHandlingDelegate>();
            // TODO: needs testing - potentially bad if it's going to ping for every request
            var result          = _influxDbClient.Ping(errorHandlers).Result;
            var databaseVersion = result.Body;

            if (databaseVersion.StartsWith("0.9"))
            {
                switch (databaseVersion)
                {
                case "0.9.2":
                    _influxDbClient = new InfluxDbClientV092(influxDbClientConfiguration);
                    break;

                case "0.9.5":
                    _influxDbClient = new InfluxDbClientV092(influxDbClientConfiguration);
                    break;

                case "0.9.6":
                    _influxDbClient = new InfluxDbClientV092(influxDbClientConfiguration);
                    break;
                }
            }
            else
            {
                throw new InvalidOperationException(String.Format("Version {0} is not supported by the Auto configuration.", databaseVersion));
            }
        }
Beispiel #2
0
 internal InfluxDb(InfluxDbClientConfiguration influxDbClientConfiguration)
 {
     switch (influxDbClientConfiguration.InfluxVersion)
     {
         case InfluxVersion.Auto:
             _influxDbClient = new InfluxDbClientAutoVersion(influxDbClientConfiguration);
             break;
         case InfluxVersion.v012x:
             _influxDbClient = new InfluxDbClientV012x(influxDbClientConfiguration);
             break;
         case InfluxVersion.v011x:
             _influxDbClient = new InfluxDbClientV011x(influxDbClientConfiguration);
             break;
         case InfluxVersion.v010x:
             _influxDbClient = new InfluxDbClientV010x(influxDbClientConfiguration);
             break;
         case InfluxVersion.v09x:
             _influxDbClient = new InfluxDbClientBase(influxDbClientConfiguration);
             break;
         case InfluxVersion.v096:
             _influxDbClient = new InfluxDbClientV096(influxDbClientConfiguration);
             break;
         case InfluxVersion.v095:
             _influxDbClient = new InfluxDbClientV095(influxDbClientConfiguration);
             break;
         case InfluxVersion.v092:
             _influxDbClient = new InfluxDbClientV092(influxDbClientConfiguration);
             break;
         case InfluxVersion.v08x:
             throw new NotImplementedException();
         default:
             throw new ArgumentOutOfRangeException("influxDbClientConfiguration", String.Format("Unknown version {0}.", influxDbClientConfiguration.InfluxVersion));
     }
 }
Beispiel #3
0
        protected override async void Append(LoggingEvent loggingEvent)
        {
            SyslogSeverity severity = Log4netSyslogSeverityConvertor.GetSyslogSeverity(loggingEvent.Level);

            InfluxDbClientConfiguration config = new InfluxDbClientConfiguration(
                new UriBuilder(Scheme, Host, RemotePort).Uri,
                string.Empty,
                string.Empty,
                InfluxData.Net.Common.Enums.InfluxDbVersion.Latest,
                InfluxData.Net.Common.Enums.QueryLocation.FormData,
                HttpClient);

            InfluxData.Net.InfluxDb.InfluxDbClient client = new InfluxData.Net.InfluxDb.InfluxDbClient(config);

            var fields = new Dictionary <string, object>();

            fields.Add("facility_code", 16);
            fields.Add("message", loggingEvent.MessageObject);
            fields.Add("procid", "1234");
            fields.Add("severity_code", severity.SeverityCode);
            fields.Add("timestamp", DateTimeOffset.Now.ToUnixTimeMilliseconds() * 1000000);
            fields.Add("version", 1);

            var tags = new Dictionary <string, object>();

            AppName.FormatValue(loggingEvent);
            tags.Add("appname", AppName.Value);
            tags.Add("facility", Facility);
            tags.Add("host", Environment.MachineName);
            tags.Add("hostname", Environment.MachineName);
            tags.Add("severity", severity.Severity);
            try
            {
                var apiResp = await client.Client.WriteAsync(new InfluxData.Net.InfluxDb.Models.Point()
                {
                    Name      = "syslog",
                    Fields    = fields,
                    Tags      = tags,
                    Timestamp = DateTimeOffset.Now.UtcDateTime
                }, "_internal"
                                                             );

                if (!apiResp.Success)
                {
                    base.ErrorHandler.Error($"{nameof(InfluxAppender)} Write - {apiResp.Body}");
                }
            }
            catch (Exception ex)
            {
                base.ErrorHandler.Error($"{nameof(InfluxAppender)} Emit - {ex.Message}");
            }
        }
        public InfluxDbClientAutoVersion(InfluxDbClientConfiguration influxDbClientConfiguration)
        {
            _influxDbClient = new InfluxDbClientBase(influxDbClientConfiguration);
            var errorHandlers = new List <ApiResponseErrorHandlingDelegate>();

            //NOTE: Only performs ping when the client is connected. (Do not use multiple connections with the "Client Auto Version" setting.)
            var result          = _influxDbClient.Ping(errorHandlers).Result;
            var databaseVersion = result.Body;

            if (databaseVersion.StartsWith("1.1."))
            {
                _influxDbClient = new InfluxDbClientV013x(influxDbClientConfiguration);
            }
            else if (databaseVersion.StartsWith("0.13."))
            {
                _influxDbClient = new InfluxDbClientV013x(influxDbClientConfiguration);
            }
            else if (databaseVersion.StartsWith("0.12."))
            {
                _influxDbClient = new InfluxDbClientV012x(influxDbClientConfiguration);
            }
            else if (databaseVersion.StartsWith("0.11."))
            {
                _influxDbClient = new InfluxDbClientV011x(influxDbClientConfiguration);
            }
            else if (databaseVersion.StartsWith("0.10."))
            {
                _influxDbClient = new InfluxDbClientV010x(influxDbClientConfiguration);
            }
            else if (databaseVersion.StartsWith("0.9."))
            {
                switch (databaseVersion)
                {
                case "0.9.2":
                    _influxDbClient = new InfluxDbClientV092(influxDbClientConfiguration);
                    break;

                case "0.9.5":
                    _influxDbClient = new InfluxDbClientV092(influxDbClientConfiguration);
                    break;

                case "0.9.6":
                    _influxDbClient = new InfluxDbClientV092(influxDbClientConfiguration);
                    break;
                }
            }
            else
            {
                _influxDbClient = new InfluxDbClientV0x(influxDbClientConfiguration);
            }
        }
        protected override void SendBuffer(LoggingEvent[] events)
        {
            InfluxDbClientConfiguration config = new InfluxDbClientConfiguration(
                new UriBuilder(Scheme, Host, RemotePort).Uri,
                string.Empty,
                string.Empty,
                InfluxData.Net.Common.Enums.InfluxDbVersion.Latest,
                InfluxData.Net.Common.Enums.QueryLocation.FormData,
                HttpClient);

            InfluxData.Net.InfluxDb.InfluxDbClient client = new InfluxData.Net.InfluxDb.InfluxDbClient(config);

            foreach (var loggingEvent in events)
            {
                SyslogSeverity severity = Log4netSyslogSeverityConvertor.GetSyslogSeverity(loggingEvent.Level);

                var fields = new Dictionary <string, object>();
                fields.Add("facility_code", 16);
                fields.Add("message", loggingEvent.MessageObject);
                fields.Add("procid", "1234");
                fields.Add("severity_code", severity.SeverityCode);
                fields.Add("timestamp", UnixTimestampFromDateTime(loggingEvent.TimeStamp));
                fields.Add("version", 1);

                var tags = new Dictionary <string, object>();
                AppName.FormatValue(loggingEvent);
                tags.Add("appname", AppName.Value);
                tags.Add("facility", Facility);
                tags.Add("host", Environment.MachineName);
                tags.Add("hostname", Environment.MachineName);
                tags.Add("severity", severity.Severity);
            }
            List <InfluxData.Net.InfluxDb.Models.Point> points = new List <InfluxData.Net.InfluxDb.Models.Point>();

            try
            {
                var apiResp = Task.Run(() => client.Client.WriteAsync(points, "_internal")).GetAwaiter().GetResult();

                if (!apiResp.Success)
                {
                    base.ErrorHandler.Error($"{nameof(InfluxAppender)} Write - {apiResp.Body}");
                }
            }
            catch (Exception ex)
            {
                base.ErrorHandler.Error($"{nameof(InfluxAppender)} Emit - {ex.Message}");
            }
        }
        public InfluxDbClientAutoVersion(InfluxDbClientConfiguration influxDbClientConfiguration)
        {
            _influxDbClient = new InfluxDbClientBase(influxDbClientConfiguration);
            var errorHandlers = new List <ApiResponseErrorHandlingDelegate>();
            // TODO: needs testing - potentially bad if it's going to ping for every request
            var result          = _influxDbClient.Ping(errorHandlers).Result;
            var databaseVersion = result.Body;

            if (databaseVersion.StartsWith("0.13."))
            {
                _influxDbClient = new InfluxDbClientV013x(influxDbClientConfiguration);
            }
            else if (databaseVersion.StartsWith("0.12."))
            {
                _influxDbClient = new InfluxDbClientV012x(influxDbClientConfiguration);
            }
            else if (databaseVersion.StartsWith("0.11."))
            {
                _influxDbClient = new InfluxDbClientV011x(influxDbClientConfiguration);
            }
            else if (databaseVersion.StartsWith("0.10."))
            {
                _influxDbClient = new InfluxDbClientV010x(influxDbClientConfiguration);
            }
            else if (databaseVersion.StartsWith("0.9."))
            {
                switch (databaseVersion)
                {
                case "0.9.2":
                    _influxDbClient = new InfluxDbClientV092(influxDbClientConfiguration);
                    break;

                case "0.9.5":
                    _influxDbClient = new InfluxDbClientV092(influxDbClientConfiguration);
                    break;

                case "0.9.6":
                    _influxDbClient = new InfluxDbClientV092(influxDbClientConfiguration);
                    break;
                }
            }
            else
            {
                _influxDbClient = new InfluxDbClientV0x(influxDbClientConfiguration);
            }
        }
 public InfluxDbClientV012x(InfluxDbClientConfiguration configuration)
     : base(configuration)
 {
 }
 public InfluxDbClientBase(InfluxDbClientConfiguration configuration)
 {
     _configuration = configuration;
 }