public async Task QueryLogsAsTable()
        {
            #region Snippet:QueryLogsAsTable
#if SNIPPET
            string workspaceId = "<workspace_id>";
#else
            string workspaceId = TestEnvironment.WorkspaceId;
#endif
            #region Snippet:CreateLogsClient
            var client = new LogsQueryClient(new DefaultAzureCredential());
            #endregion
            Response <LogsQueryResult> response = await client.QueryWorkspaceAsync(
                workspaceId,
                "AzureActivity | top 10 by TimeGenerated",
                new QueryTimeRange(TimeSpan.FromDays(1)));

            LogsTable table = response.Value.Table;

            foreach (var row in table.Rows)
            {
                Console.WriteLine(row["OperationName"] + " " + row["ResourceGroup"]);
            }

            #endregion
        }
Example #2
0
 private void ToggleLogView()
 {
     if (_adminInfo is not null)
     {
         ShowWarning = !ShowWarning;
         Logs        = (ShowWarning ? _adminInfo.Logs : _adminInfo.Logs.Where(l => l.Level == "Error")).OrderByDescending(l => l.Timestamp).ToList();
         LogsTable.SetItems(Logs);
     }
 }
Example #3
0
    private async Task ClearLogsAsync()
    {
        await AdminApi.ClearLogsAsync();

        await OnInitializedAsync();

        ToastService.DisplayToast("Logs vidés.", TimeSpan.FromSeconds(3), ToastType.Success, "clear-logs-admin", true);
        LogsTable.SetItems(Logs);
        ShowWarning = false;
    }
        public async Task <bool> RunLAQuery(string tableName)
        {
            try
            {
                // Get credentials from config.txt
                Dictionary <string, string> credentials = new AppConfig().GetCredentials();
                _workspaceId  = credentials["workspaceId"];
                _clientId     = credentials["clientId"];
                _clientSecret = credentials["clientSecret"];
                _domain       = credentials["domain"];

                var credential = new ClientSecretCredential(_domain, _clientId, _clientSecret);
                var logsClient = new LogsQueryClient(credential);

                // Get a list of table names in your workspace
                var distinctTablesQuery             = "search * | distinct $table";
                Response <LogsQueryResult> response =
                    await logsClient.QueryWorkspaceAsync(_workspaceId, distinctTablesQuery, QueryTimeRange.All);

                LogsTable table = response.Value.Table;

                IEnumerable <string> tableNames = from row in table.Rows
                                                  let columnValue = row.GetString("$table")
                                                                    where columnValue.EndsWith("_CL")
                                                                    select columnValue;

                // Get custom table name
                tableName = tableName.Replace(".json", "");

                // Check if the custom table name exists in the list
                if (!tableNames.Contains(tableName))
                {
                    return(false);
                }
                else
                {
                    // Check if there's any data in the table for last 7 days
                    var query     = $"{tableName} | limit 10";
                    var timeRange = new QueryTimeRange(TimeSpan.FromDays(7));
                    Response <LogsQueryResult> results =
                        await logsClient.QueryWorkspaceAsync(_workspaceId, query, timeRange);

                    int tableCount = results.Value.AllTables.Count;

                    return(tableCount > 0);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Calling Log Analytics error " + ex.Message);
            }
        }
Example #5
0
 private void SaveLog(LogEntry log)
 {
     Debug.WriteLine("Horizon Log : " + log.Message);
     if (LogsTable != null)
     {
         TableOperation insertOperation = TableOperation.Insert(log);
         LogsTable.Execute(insertOperation);
     }
     else
     {
         Debug.WriteLine("Horizon Log : Cannot save to server.");
     }
 }
        public async Task QueryLogsAsTablePrintAll()
        {
            #region Snippet:QueryLogsPrintTable

#if SNIPPET
            string workspaceId = "<workspace_id>";
#else
            string workspaceId = TestEnvironment.WorkspaceId;
#endif

            var client = new LogsQueryClient(new DefaultAzureCredential());
            Response <LogsQueryResult> response = await client.QueryWorkspaceAsync(
                workspaceId,
                "AzureActivity | top 10 by TimeGenerated",
                new QueryTimeRange(TimeSpan.FromDays(1)));

            LogsTable table = response.Value.Table;

            foreach (var column in table.Columns)
            {
                Console.Write(column.Name + ";");
            }

            Console.WriteLine();

            var columnCount = table.Columns.Count;
            foreach (var row in table.Rows)
            {
                for (int i = 0; i < columnCount; i++)
                {
                    Console.Write(row[i] + ";");
                }

                Console.WriteLine();
            }

            #endregion
        }
        public void ValidateMonitorModelFactoryTableCreation()
        {
            LogsTableColumn logsTableColumn0 = MonitorQueryModelFactory.LogsTableColumn("column0", LogsColumnType.Datetime);
            LogsTableColumn logsTableColumn1 = MonitorQueryModelFactory.LogsTableColumn("column1", LogsColumnType.Guid);
            LogsTableColumn logsTableColumn2 = MonitorQueryModelFactory.LogsTableColumn("column2", LogsColumnType.Int);
            LogsTableColumn logsTableColumn3 = MonitorQueryModelFactory.LogsTableColumn("column3", LogsColumnType.Long);
            LogsTableColumn logsTableColumn4 = MonitorQueryModelFactory.LogsTableColumn("column4", LogsColumnType.Real);
            LogsTableColumn logsTableColumn5 = MonitorQueryModelFactory.LogsTableColumn("column5", LogsColumnType.String);
            LogsTableColumn logsTableColumn6 = MonitorQueryModelFactory.LogsTableColumn("column6", LogsColumnType.Timespan);
            LogsTableColumn logsTableColumn7 = MonitorQueryModelFactory.LogsTableColumn("column7", LogsColumnType.Decimal);
            LogsTableColumn logsTableColumn8 = MonitorQueryModelFactory.LogsTableColumn("column8", LogsColumnType.Bool);
            LogsTableColumn logsTableColumn9 = MonitorQueryModelFactory.LogsTableColumn("column9", LogsColumnType.Dynamic);

            LogsTableColumn[] logsTableColumns = new LogsTableColumn[] { logsTableColumn0, logsTableColumn1, logsTableColumn2, logsTableColumn3, logsTableColumn4, logsTableColumn5, logsTableColumn6, logsTableColumn7, logsTableColumn8, logsTableColumn9 };
            Object[]          rowValues        = new Object[] { "2015-12-31T23:59:59.9Z", "74be27de-1e4e-49d9-b579-fe0b331d3642", 12345, 1234567890123, 12345.6789, "string value", "00:00:10", "0.10101", false, "{\u0022a\u0022:123,\u0022b\u0022:\u0022hello\u0022,\u0022c\u0022:[1,2,3],\u0022d\u0022:{}}" };

            LogsTableRow logsTableRow = MonitorQueryModelFactory.LogsTableRow(logsTableColumns, rowValues);

            LogsTableRow[] rowArray  = new LogsTableRow[] { logsTableRow };
            LogsTable      logsTable = MonitorQueryModelFactory.LogsTable("tester", logsTableColumns.AsEnumerable(), rowArray.AsEnumerable());

            Assert.AreEqual("tester", logsTable.Name);
            Assert.AreEqual(1, logsTable.Rows.Count);
            Assert.AreEqual(10, logsTable.Columns.Count);

            Assert.AreEqual("column0", logsTable.Columns[0].Name);
            Assert.AreEqual("datetime", logsTable.Columns[0].Type.ToString());
            Assert.AreEqual("column1", logsTable.Columns[1].Name);
            Assert.AreEqual("guid", logsTable.Columns[1].Type.ToString());
            Assert.AreEqual("column2", logsTable.Columns[2].Name);
            Assert.AreEqual("int", logsTable.Columns[2].Type.ToString());
            Assert.AreEqual("column3", logsTable.Columns[3].Name);
            Assert.AreEqual("long", logsTable.Columns[3].Type.ToString());
            Assert.AreEqual("column4", logsTable.Columns[4].Name);
            Assert.AreEqual("real", logsTable.Columns[4].Type.ToString());
            Assert.AreEqual("column5", logsTable.Columns[5].Name);
            Assert.AreEqual("string", logsTable.Columns[5].Type.ToString());
            Assert.AreEqual("column6", logsTable.Columns[6].Name);
            Assert.AreEqual("timespan", logsTable.Columns[6].Type.ToString());
            Assert.AreEqual("column7", logsTable.Columns[7].Name);
            Assert.AreEqual("decimal", logsTable.Columns[7].Type.ToString());
            Assert.AreEqual("column8", logsTable.Columns[8].Name);
            Assert.AreEqual("bool", logsTable.Columns[8].Type.ToString());
            Assert.AreEqual("column9", logsTable.Columns[9].Name);
            Assert.AreEqual("dynamic", logsTable.Columns[9].Type.ToString());

            var expectedDate = DateTimeOffset.Parse("2015-12-31 23:59:59.9+00:00");

            Assert.AreEqual(expectedDate, logsTable.Rows[0].GetDateTimeOffset(0));
            Assert.AreEqual(expectedDate, logsTable.Rows[0].GetObject("column0"));
            Assert.AreEqual(false, logsTable.Rows[0].GetBoolean("column8"));
            Assert.AreEqual(false, logsTable.Rows[0].GetBoolean(8));
            Assert.AreEqual(false, logsTable.Rows[0].GetObject("column8"));
            Assert.AreEqual(Guid.Parse("74be27de-1e4e-49d9-b579-fe0b331d3642"), logsTable.Rows[0].GetGuid("column1"));
            Assert.AreEqual(Guid.Parse("74be27de-1e4e-49d9-b579-fe0b331d3642"), logsTable.Rows[0].GetGuid(1));
            Assert.AreEqual(Guid.Parse("74be27de-1e4e-49d9-b579-fe0b331d3642"), logsTable.Rows[0].GetObject("column1"));
            Assert.AreEqual(12345, logsTable.Rows[0].GetInt32("column2"));
            Assert.AreEqual(12345, logsTable.Rows[0].GetInt32(2));
            Assert.AreEqual(12345, logsTable.Rows[0].GetObject("column2"));
            Assert.AreEqual(1234567890123, logsTable.Rows[0].GetInt64("column3"));
            Assert.AreEqual(1234567890123, logsTable.Rows[0].GetInt64(3));
            Assert.AreEqual(1234567890123, logsTable.Rows[0].GetObject("column3"));
            Assert.AreEqual(12345.6789d, logsTable.Rows[0].GetDouble("column4"));
            Assert.AreEqual(12345.6789d, logsTable.Rows[0].GetDouble(4));
            Assert.AreEqual(12345.6789d, logsTable.Rows[0].GetObject("column4"));
            Assert.AreEqual("string value", logsTable.Rows[0].GetString("column5"));
            Assert.AreEqual("string value", logsTable.Rows[0].GetString(5));
            Assert.AreEqual("string value", logsTable.Rows[0].GetObject("column5"));
            Assert.AreEqual(TimeSpan.FromSeconds(10), logsTable.Rows[0].GetTimeSpan("column6"));
            Assert.AreEqual(TimeSpan.FromSeconds(10), logsTable.Rows[0].GetTimeSpan(6));
            Assert.AreEqual(TimeSpan.FromSeconds(10), logsTable.Rows[0].GetObject("column6"));
            Assert.AreEqual(0.10101m, logsTable.Rows[0].GetDecimal("column7"));
            Assert.AreEqual(0.10101m, logsTable.Rows[0].GetDecimal(7));
            Assert.AreEqual(0.10101m, logsTable.Rows[0].GetObject("column7"));
            Assert.IsFalse(logsTable.Rows[0].GetBoolean("column8"));
            Assert.IsFalse(logsTable.Rows[0].GetBoolean(8));
            Assert.AreEqual(false, logsTable.Rows[0].GetObject("column8"));
            Assert.AreEqual("{\"a\":123,\"b\":\"hello\",\"c\":[1,2,3],\"d\":{}}", logsTable.Rows[0].GetDynamic(9).ToString());
            Assert.AreEqual("{\"a\":123,\"b\":\"hello\",\"c\":[1,2,3],\"d\":{}}", logsTable.Rows[0].GetDynamic("column9").ToString());
            Assert.AreEqual("{\"a\":123,\"b\":\"hello\",\"c\":[1,2,3],\"d\":{}}", logsTable.Rows[0].GetObject("column9").ToString());
        }